package zdori.swing;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

//메뉴 작성법
//JMenuBar -> JMenu -> JmenuItem


public class SwingMenu_1 extends JMenuBar{

	private JMenu mnFile = null;  //파일
	private JMenu mnEdit = null;  //편집
	private JMenu mnView = null;  //보기
	private JMenu mnTool = null;  //도구
	private JMenu mnWnd = null;  //창
	private JMenu mnHelp = null;  //도움말
	
	public SwingMenu_1() {
		
		makeMenu();
		makeMenuItem();
		addShortCut();
		addMenu();
	}

	//메뉴바에 추가할 메뉴를 생성함
	private void makeMenu() {
		
		mnFile = new JMenu("파 일(F)");
		//mnFile.setFont(new Font("맑은 고딕",Font.BOLD,12));	
		//메뉴 글꼴 변경을 위해 setFont 메서드사용
		//하지만, 모든 메뉴와 메뉴항목에 setFont를 사용하는 것은 무척 번거로운 일임
		//폰트를 다른것으로 바꾸기라도 한다면..ㅠㅠ
		//따라서,프로그램 전체 글꼴을 변경하는 방법을 이용
		//main 메서드에서 FontUIResource 이용함
		
		mnEdit = new JMenu("편 집(E)");
		//mnEdit.setFont(new Font("맑은 고딕",Font.BOLD,12));		
		mnView = new JMenu("보 기(V)");
		//mnView.setFont(new Font("맑은 고딕",Font.BOLD,12));		
		mnTool = new JMenu("도 구(T)");
		//mnTool.setFont(new Font("맑은 고딕",Font.BOLD,12));		
		mnWnd = new JMenu("창 (W)");
		//mnWnd.setFont(new Font("맑은 고딕",Font.BOLD,12));		
		mnHelp = new JMenu("도움말(H)");
		//mnHelp.setFont(new Font("맑은 고딕",Font.BOLD,12));			
	}
	
    //메뉴항목에 단축키 지정
	private void addShortCut() {
		mnFile.setMnemonic(KeyEvent.VK_F);
		mnEdit.setMnemonic(KeyEvent.VK_E);
		mnView.setMnemonic(KeyEvent.VK_V);
		mnTool.setMnemonic(KeyEvent.VK_T);
		mnWnd.setMnemonic(KeyEvent.VK_W);
		mnHelp.setMnemonic(KeyEvent.VK_H);
			
	}

	private void addMenu() {
		add(mnFile);
		add(mnEdit);
		add(mnView);
		add(mnTool);
		add(mnWnd);
		add(mnHelp);
		
	}

	//메뉴에 추가할 메뉴항목menuitem 생성
	//배열이 이용하면 쬐금 편해짐
	private JMenuItem makeMenuItems(String text, String img, int skey, boolean off, int akey){
		
		
		String icon = null;  //메뉴에 쓸 아이콘
		if(img != null)      //아이콘이미지가 있으면
			icon = "/images/menu/" + img + ".png";
		
		System.out.println(icon);
		JMenuItem mnitem = null; //메뉴항목
		if(img!=null){
			mnitem = new JMenuItem(text,new ImageIcon(getClass().getResource(icon)));
		} else  {
			mnitem = new JMenuItem(text);
		}
		
		mnitem.setEnabled(off); //메뉴 활성/비활성
		mnitem.setMnemonic(skey);
		mnitem.setAccelerator(KeyStroke.getKeyStroke(akey,
				ActionEvent.CTRL_MASK));  //단축키
		
		return mnitem;
		
	}
	
	//메뉴에 메뉴항목 추가
			private void makeMenuItem(){
				mnFile.add(makeMenuItems("새 파일(N)", "mail", KeyEvent.VK_N, true, KeyEvent.VK_1));
				mnFile.addSeparator();
				mnFile.add(makeMenuItems("닫 기(C)", "mydoc",KeyEvent.VK_C , false, KeyEvent.VK_2));
				mnFile.addSeparator();
				mnFile.add(makeMenuItems("종 료(X)", "exit", KeyEvent.VK_X, true, KeyEvent.VK_3));
				
			}
	
}
